﻿using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace App_Persistencia
{
   public class Servicio_Adicional_Data
    {
        int id;

        public int Id
        {
            get { return id; }
            set { id = value; }
        }
        string nombre;

        public string Nombre
        {
            get { return nombre; }
            set { nombre = value; }
        }
        float precio;

        public float Precio
        {
            get { return precio; }
            set { precio = value; }
        }
        int tipo_Servicio;

        public int Tipo_Servicio
        {
            get { return tipo_Servicio; }
            set { tipo_Servicio = value; }
        }
        int proveedor_Servicio;

        public int Proveedor_Servicio
        {
            get { return proveedor_Servicio; }
            set { proveedor_Servicio = value; }
        }

        public void buscarUnServicio()
        {
            // Crear el Objeto de conexion, inicializa con la cadena de conexion
            string conexion = ConfigurationManager.ConnectionStrings["CadenaConexion"].ConnectionString;
            System.Data.SqlClient.SqlConnection connection = new SqlConnection(conexion);

            // Abro la conexion
            connection.Open();

            //Invoco al Objeto SqlTransaction para manejar la transaccion  
            //ejecuto la transaccion
            //SqlTransaction transaccion = connection.BeginTransaction(); ;

            try
            {
                // Creo el Objeto Command, le asigno la conexion y el Procediminto a utilizar
                System.Data.SqlClient.SqlCommand command = new System.Data.SqlClient.SqlCommand();
                //Asigno a la propiedad Transaction del Objeto SqlCommand el valor del Objeto SqlTransaction
                //command.Transaction = transaccion;
                //Asingo la conexion al objeto conection
                command.Connection = connection;
                command.CommandText = "spBuscarUnServicio";
                command.CommandType = CommandType.StoredProcedure;

                // Declaro el Objeto de parametro
                System.Data.SqlClient.SqlParameter param;

                // Establesco el parametro @SocId, uso como entrada los atributos de la clase
                param = command.Parameters.AddWithValue("@SerId", id);
                param.DbType = DbType.Int32;
                param.Direction = ParameterDirection.Input;

                //// Establesco el parametro @SocDenom                
                //param = command.Parameters.AddWithValue("@SerNombre", nombre);
                //param.DbType = DbType.String;
                //param.Size = 50;
                //param.Direction = ParameterDirection.Output;

                //// Establesco el parametro @SocDNI
                param = command.Parameters.AddWithValue("@SerPrecio", precio);
                param.DbType = DbType.Double;
                param.Direction = ParameterDirection.Output;

                // Ejecuto el procedimiento
                command.ExecuteNonQuery();

                //recupero el valor del parametro @UsuarioId
                //usuarioId = Convert.ToInt32(command.Parameters["@UsuarioId"].Value);
                precio = float.Parse(command.Parameters["@SerPrecio"].Value.ToString());
               
                //socNombre = command.Parameters["@SocDenom"].Value.ToString();
                //socDNI = Convert.ToInt32(command.Parameters["@SocDNI"].Value);
                //socTelefono = command.Parameters["@SocTelefono"].Value.ToString();
                //socDireccion = command.Parameters["@SocDir"].Value.ToString();
                //socDirNum = command.Parameters["@SocDirNum"].Value.ToString();
                //socDirDepto = command.Parameters["@SocDirDepto"].Value.ToString();
                //socTelEmerg = command.Parameters["@SocTelEmergencia"].Value.ToString();
                //socContacto = command.Parameters["@SocContacto"].Value.ToString();
                //socFecNac = Convert.ToDateTime(command.Parameters["@SocFecNac"].Value);
                //socEstatura = Convert.ToDouble(command.Parameters["@SocEstatura"].Value);
                //socEmail = command.Parameters["@SocEmail"].Value.ToString();
                //socEstado = Convert.ToInt32(command.Parameters["@SocEstado"].Value);
                //socPlan = Convert.ToInt32(command.Parameters["@SocPlan"].Value);

            }
            catch (Exception e)
            {
                //si se produjo algun error lo capturo y ejecuto el Rollback de la transaccion
                //transaccion.Rollback();
                //provoco una Exepcion para la capa superior
                System.Diagnostics.Trace.Write(e.Message);
                throw new ApplicationException();
            }
            finally
            {
                //Si termino la carga correctamente cierro la conexion
                connection.Close();
            }
        }

        public DataView popularsAdicionalConTipo()
        {
            //Creo la sentencia SQL
            string commandSQL = "SELECT DISTINCT Servicio_Adicional_Tipo.tSAd_Id, Servicio_Adicional_Tipo.tSAd_Nombre, Servicio_Adicional.sAd_Precio, Servicio_Adicional.sAd_Id " +
                                "FROM   Servicio_Adicional INNER JOIN " +
                                "Servicio_Adicional_Tipo ON Servicio_Adicional.sAd_Id = Servicio_Adicional_Tipo.tSAd_Id ";

            // Creo el Objeto DataAdapter y le paso la cadena al constructor y la sentencia SQL
            string conexion = ConfigurationManager.ConnectionStrings["CadenaConexion"].ConnectionString;
            SqlDataAdapter dataAdapter = new SqlDataAdapter(commandSQL, conexion);

            // Creo el Objeto DataSet
            DataSet dataSet = new DataSet();

            // Relleno el Objeto DataSet
            dataAdapter.Fill(dataSet, "sAdicional");

            //creo la vista de la consulta
            DataView dataView = new DataView();

            //Cargo la Vista con el contenido de la tabla de resultados
            dataView = dataSet.Tables["sAdicional"].DefaultView;

            // Obtengo la tabla del DataSet
            //DataTable dataTable = dataSet.Tables["Ejercicio"];

            return dataView;

            // --- Vercion Profesor con edicion de GridView


        }

        public DataTable buscarServicios_AdicionalesPorPresupuesto(int idPresupuesto)
        {
            string commandSQL = " SELECT     Servicio_Adicional.sAd_Id AS SAId, Servicio_Adicional.sAd_Nombre AS Nombre, Servicio_Adicional.sAd_Precio AS Precio, "
                                +" Servicio_Adicional_Tipo.tSAd_Nombre AS Tipo, Servicio_Adicional_Tipo.tSAd_Id AS TipoId, "
                                +" Provedor_Servicio_Adicional.sAdProv_Nombre AS ProvServNombre, Provedor_Servicio_Adicional.sAdProv_Id AS ProvServId "
                                +" FROM PresupuestoxServ_Adic INNER JOIN "
                                +" Servicio_Adicional ON PresupuestoxServ_Adic.servAdicional_Id = Servicio_Adicional.sAd_Id INNER JOIN "
                                +" Servicio_Adicional_Tipo ON Servicio_Adicional.tipoServicio_Id = Servicio_Adicional_Tipo.tSAd_Id INNER JOIN "
                                +" Provedor_Servicio_Adicional ON Servicio_Adicional.provServicio_Id = Provedor_Servicio_Adicional.sAdProv_Id";

            if (id != -1)
            {
                StringBuilder s = new StringBuilder(commandSQL);
                s.Append(" WHERE (PresupuestoxServ_Adic.presupuesto_Id = " + idPresupuesto.ToString() + ")");
                commandSQL = s.ToString();
            }
            string conexion = ConfigurationManager.ConnectionStrings["CadenaConexion"].ConnectionString;
            SqlDataAdapter dataAdapter = new SqlDataAdapter(commandSQL, new SqlConnection(conexion));
            DataSet dataSet = new DataSet();
            dataAdapter.Fill(dataSet, "Servicio_Adicional");
            DataTable dataTable = dataSet.Tables["Servicio_Adicional"];
            return dataTable;
        }

        public DataView buscarProveedores(int idTipoServicio)
        {
            //Creo la sentencia SQL
            string commandSQL = "SELECT sAd_Id, sAd_Nombre, sAd_Precio FROM Servicio_Adicional WHERE tipoServicio_Id = " + idTipoServicio;

            // Creo el Objeto DataAdapter y le paso la cadena al constructor y la sentencia SQL
            string conexion = ConfigurationManager.ConnectionStrings["CadenaConexion"].ConnectionString;
            SqlDataAdapter dataAdapter = new SqlDataAdapter(commandSQL, conexion);

            // Creo el Objeto DataSet
            DataSet dataSet = new DataSet();

            // Relleno el Objeto DataSet
            dataAdapter.Fill(dataSet, "Servicio_Adicional");

            //creo la vista de la consulta
            DataView dataView = new DataView();

            //Cargo la Vista con el contenido de la tabla de resultados
            dataView = dataSet.Tables["Servicio_Adicional"].DefaultView;

            // Obtengo la tabla del DataSet
            //DataTable dataTable = dataSet.Tables["Ejercicio"];

            return dataView;

            // --- Vercion Profesor con edicion de GridView

        }

    }
}
